package jaran.xiongcheng;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class AppCoree {
    public static void main(String[] args) throws Exception {
        // TODO
        // 1. 通过反射得到 CoreService 类的实例 c
        // 2. 调用实例 c 的 say 方法并看到输出结果
        // 要求：不要使用 new 关键字
        Class<?> A = Class.forName("jaran.xiongcheng.CoreServicee");
        Object o = A.newInstance();
        Field[] fields=A.getDeclaredFields();
        for (Field field : fields){
            field.setAccessible(true);
            Class<?> type = field.getType();
            if(type.toString().endsWith("CustomerServicee")){
                Class<?> B = Class.forName("jaran.xiongcheng.CustomerServicee");
                field.set(o,B.newInstance());
            }
            if(type.toString().endsWith("OrderServicee")){
                Class<?> C = Class.forName("jaran.xiongcheng.OrderServicee");
                field.set(o,C.newInstance());
            }
            if(type.toString().endsWith("UserServicee")){
                Class<?> D = Class.forName("jaran.xiongcheng.UserServicee");
                field.set(o,D.newInstance());
            }
        }
        Method say = A.getDeclaredMethod("say");
        say.invoke(o);


    }

}
